/** 
 * Speichert die Daten der RegalEtagen.
 * 
 * Datei: Regaletage.java 		Autor: Simon Schindelmann 
 * Datum: 13.11.11                 	Version: 0.1
 * 
 */
package medienverwaltung;

import java.io.Serializable;
import java.util.ArrayList;

public class RegalEtage implements Serializable
{
  private static final long serialVersionUID = 1063975063446883712L;
  private int anzahlAbschnitte, etagenNr;
  private ArrayList<Regalabschnitt> abschnitte = 
    new ArrayList<Regalabschnitt> ();
  private Abmessung abmessungAbschnitt, etage;
  private int abschnittNr = 0;
  private Standortverwalter sv = new Standortverwalter ();


  public RegalEtage (int anzahl, Abmessung abmessungEtage, int nummer)
  { 
    etagenNr = nummer;
    anzahlAbschnitte = anzahl;
    etage = abmessungEtage;
    abmessungAbschnitt = new Abmessung (
        (abmessungEtage.gibLaenge () / anzahlAbschnitte),
          abmessungEtage.gibHoehe (), abmessungEtage.gibBreite ());
    abschnitteAnlegen ();
  }

  
  /**
   * Hier werden die Abschnitte Angelegt.
   */
  public void abschnitteAnlegen ()
  {
    for (int i = 0; i < anzahlAbschnitte; i++)
    {
      abschnittNr = abschnittNr + 1;
      Regalabschnitt ra = new Regalabschnitt (abmessungAbschnitt,
          abschnittNr);
      abschnitte.add (ra);
    }
  }

  
  /**
   * Hier werden die Abschnitte gesetzt.
   * @param anzahl Anzahl der Abschnitte der Etage.
   */
  public void setzeAbschnitte (int anzahl)
  {
    abschnittNr = 0;
    anzahlAbschnitte = anzahl;
    abmessungAbschnitt = new Abmessung (
        (etage.gibLaenge () / anzahlAbschnitte),
        etage.gibHoehe (), etage.gibBreite ());
    for (int i = 0; i < anzahlAbschnitte; i++)
    {
      abschnittNr = abschnittNr++;
      Regalabschnitt ra = new Regalabschnitt (abmessungAbschnitt,
          abschnittNr);
      abschnitte.add (ra);
    }
    sv.zustandSpeichern ();
  }
  
  
  /**
   * Gibt die Etagennummer zurueck.
   * @return Nummer der Etage.
   */
  public int gibEtagenNr ()
  {
    return etagenNr;
  }


  /**
   * Gibt den Abschnitt mit der entsprechenden Nummer zurueck.
   * 
   * @param Abschnitt Nummer des Regalsabschnitts.
   * @return gibt den Abschnitt mit der entsprechneden Nummer zureuck
   * falls die Nummer nicht existiert wird null zurueck gegeben.
   */
  public Regalabschnitt gibAbschnitt (int abschnitt)
  {
    Regalabschnitt ra;
    for (int i = 0; i < abschnitte.size (); i++)
    {
      ra = abschnitte.get (i);
      if (etagenNr == ra.gibNummer ())
      {
        return ra;
      }
    }
    return null;
  }
  
  
  /**
   * Gibt eine Liste mit allen Abschnitten der Etage zurueck.
   * @return ArrayListe mit den Abschnitten der Etage.
   */
  public ArrayList<Regalabschnitt> gibAbschnittListe ()
  {
    return abschnitte;
  }
}
